#include "module_param.h"

static unsigned int baud = 115200;
static int port[4] = {0,1,2,3};
static char *name = "module param test";

//声明模块参数
/**
 * name 参数名称
 * type 变量类型，内核支持 bool invbool charp short int long ushort uint ulong 
 * perm 在/sys/module/xxx/parameters/下生成的文件的权限，可以采用8进制格式表示
 */
module_param(baud, uint, S_IRUGO);
module_param(name, charp, S_IRUGO);

/**
 * name 参数名称
 * type 变量类型，内核支持 bool invbool charp short int long ushort uint ulong 
 * nump 指向存数组元素个数的变量，可以为NULL
 * perm 在/sys/module/xxx/parameters/下生成的文件的权限，可以采用8进制格式表示
 */
module_param_array(port, int, NULL, S_IRUGO);

//模块加载函数
static int __init driver_init(void)
{
	int i;
	printk("module init\r\n");

	printk("baud = %d\r\n", baud);

	for(i=0; i<4; i++)
		printk("port[%d] = %d\t", i, port[i]);
	printk("\r\n");

	printk("name = %s\r\n", name);
	return 0;
}

//模块卸载函数
static void __exit driver_exit(void)
{
	printk("module exit\r\n");
}


module_init(driver_init);
module_exit(driver_exit);


MODULE_LICENSE("GPL");
//模块作者信息
MODULE_AUTHOR("liao fei");
//模块描述
MODULE_DESCRIPTION("module parameter test");

